MFC 初级相关问题"消失问题"

来源:百度知道 编辑:UC知道 时间:2024/05/22 21:29:15
我正在做"打砖块游戏"
先已经实现了基本的框架
请问各位高手,当小球触碰到上面的小矩形后,小矩形怎么自动消失.
然后小球依旧走正常的路线
在下QQ254560671 期待... baidu的分用光了,抱歉抱歉..

之前话矩形框的时候应该有保存它的CRect值吧,看你这背景是白色的,直接再用背景色填充那个矩形区域就可以啦(好像是用CDC类的FillSolidRect函数)
假如 你的矩形区域左上角坐标为(0,0),右下角坐标是(50,30),用CRect类表示: CRect rc(0,0,50,30); 保存成全局变量 然后用Rectangle(&rc)构建矩形,当小球碰到矩形之后,用FillSolidRect(&rc,RGB(255,255,255)); 即用白色填充该矩形区域
至于球的路线涉及到简单的几何计算了,应该不难吧

silvergingko的方法比我的好!!

如果代码不需要保密的话:请把代码压成*.rar当附件发在我的论坛( 何丹的论坛)上.压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps. 如果不想注册,可用临时号,帐号和密码都是test2
URL我通过消息发给你吧

不用像一楼说的去用白色刷子涂掉它,由于楼主用的窗口背景刷子是白的,简单调用一句InvalidateRect(rectDISAPPEARED, TRUE);rectDISAPPEARED是被小球触碰需要消失的那个红色矩形框。

不过要注意,WINDOWS图形算法有个问题是当InvalidateRect时,参数rectDISAPPEARED的左边缘和上边缘是算在无效区域里的,但右边缘及下边缘是不算在里面的。所以要对rectDISAPPEARED做下处理:
rectDISAPPEARED.InflateRect(0, 0, 1, 1);

rectDISAPPEARED = rectDISAPPEARED + CRect(0, 0, 1, 1);

自己做啊
一开始应该涉及不到人工智能 ,所以大多都是计算坐标,坐标有交叉的话,保留哪个,移去哪个就很清楚了,或者说绘制哪个不绘制哪个…………
我也是初学 希望能提供点思路